約 1,485,052 件
https://w.atwiki.jp/hirotakaohkubo/pages/1.html
@wikiへようこそ ウィキはみんなで気軽にホームページ編集できるツールです。 このページは自由に編集することができます。 メールで送られてきたパスワードを用いてログインすることで、各種変更(サイト名、トップページ、メンバー管理、サイドページ、デザイン、ページ管理、等)することができます まずはこちらをご覧ください。 @wikiの基本操作 用途別のオススメ機能紹介 @wikiの設定/管理 分からないことは? @wiki ご利用ガイド よくある質問 無料で会員登録できるSNS内の@wiki助け合いコミュニティ @wiki更新情報 @wikiへのお問合せフォーム 等をご活用ください @wiki助け合いコミュニティの掲示板スレッド一覧 #atfb_bbs_list その他お勧めサービスについて 大容量1G、PHP/CGI、MySQL、FTPが使える無料ホームページは@PAGES 無料ブログ作成は@WORDをご利用ください 2ch型の無料掲示板は@chsをご利用ください フォーラム型の無料掲示板は@bbをご利用ください お絵かき掲示板は@paintをご利用ください その他の無料掲示板は@bbsをご利用ください 無料ソーシャルプロフィールサービス @flabo(アットフラボ) おすすめ機能 気になるニュースをチェック 関連するブログ一覧を表示 その他にもいろいろな機能満載!! @wikiプラグイン @wiki便利ツール @wiki構文 @wikiプラグイン一覧 まとめサイト作成支援ツール バグ・不具合を見つけたら? 要望がある場合は? お手数ですが、メールでお問い合わせください。
https://w.atwiki.jp/hirotakaohkubo/pages/74.html
p.22 L.-6~-5 Re-Errata Wrong hd xs ++ tl xs = xs init xs ++ last xs = xs Correct [head xs] ++ tail xs = xs init xs ++ [last xs] = xs
https://w.atwiki.jp/hirotakaohkubo/pages/30.html
作業用のノートです。 here Folding function of List
https://w.atwiki.jp/hirotakaohkubo/pages/27.html
template p.??? Wrong Corrent Place comment here Name Message
https://w.atwiki.jp/hirotakaohkubo/pages/15.html
Pearls of Functional Algorithm Design 2011B3輪講 2011/10/28開始 2012年度も基本同一メンバーで自主ゼミとして継続 9月に休止 Memo 記法 / Notation この本ではdiv, maxなどを中置演算子として用いるとき、ローマン体で表記しているようです。 In this book, it seems that roman word stands for infix operator in both mathematical equation and Haskell code. Errata Ch1, Ch2 Ch3, Ch4 Ch5, Ch6 Ch7, Ch8 Ch9, Ch10, Ch11 Ch12 Ch13 Ch14, Ch15 Ch18 Ch19, Ch20, Ch21 Ch22,Ch24 Others Place comment here Name Message
https://w.atwiki.jp/hirotakaohkubo/pages/41.html
4.1 前半 absPitch . pitch = λap → (absPitch . pitch) ap = λap → 12 ∗ div ap 12 + pcToInt ([C,Cs,···,As,B] !! mod ap 12) = λap → 12 ∗ div ap 12 + [0..11] !! mod ap 12 --(1) = λap → 12 ∗ div ap 12 + mod ap 12 --(2) = λap → ap --(3) = id 1は f (xs !! k) = (map f xs) !! k より。 2は x ≤ k ならば [0..k] !! x = x より。 3は除算演算子の定義の x = y ∗ q + r の形になっているところから。 後半 まず「異名同音を考慮して音が等しい」とは、絶対音階に変換して等しいことと定義する。 すなわち、pitch.absPitch と id が異名同音を考慮して音が等しいとは、 任意の音 p に対して、pitch (absPitch p) と id p に absPitch を施した結果が等しいということである。 式で書くと ∀p . absPitch (pitch (absPitch p)) == absPitch (id p) 左辺は前半より absPitch p と等しいので、題意は満たされた。 4.2 trans i (trans j p) = pitch (absPitch (pitch (absPitch p + j)) + i) = pitch ((absPitch p + j) + i) = pitch (absPitch p + (i + j)) = trans (i + j) p 4.3 trilln i k n@(Prim (Note p nd)) = trill i (nd / k) n trilln i k n@(Prim (Note p nd)) = trill i (nd / k) n 4.4 証明するべき式を正しく書く。 ∀n = Prim (Note p nd) . durM (trill i d n) = durM n 右辺はndである。 左辺の値がこれに等しいことを、区間で分ける帰納法で証明する。 ■基底 0 ≤ nd ≤ d の場合 durM (trill i d n) = durM (trill i d (Prim (Note p nd))) = durM (Prim (Note p nd)) = nd ■帰納 ある 0 ≤ nd0について題意が満たされていると仮定する。このとき、nd = nd0 + d を考える。 durM (trill i d n) = durM (trill i d (Prim (Note p nd))) = durM (Prim (Note p d) + trill (…) d (Prim (Note (…) (nd − d)))) = durM (Prim (Note p d) + durM (trill (…) d (Prim (Note (…) nd0)))) = d + nd0 = nd 4.6 data Mode = Ionian | Dorian | Phrygian | Lydian | Mixolydian | Aeolian | Locrian scale Mode - Note - [Music] scale mode n = m + applyM m (mode2scale mode) where m = Prim n mode2scale Ionian = ionian mode2scale Dorian = dorian mode2scale Phrygian = phrygian mode2scale Lydian = lydian mode2scale Mixolydian = mixolydian mode2scale Aeolian = aeolian mode2scale Locrian = locrian major = Trans 2 minor = Trans 1 rotate (x xs) = xs ++ [x] applyM m [] = [] applyM m (trans ts) = trans m applyM (trans m) ts ionian = [major, major, minor, major, major, major, minor] dorian = rotate ionian phrygian = rotate dorian lydian = rotate phrygian mixolydian = rotate lydian aeolian = rotate mixolydian locrian = rotate aeolian コメント 名前 コメント
https://w.atwiki.jp/hirotakaohkubo/pages/6.html
更新履歴 @wikiのwikiモードでは #recent(数字) と入力することで、wikiのページ更新履歴を表示することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_117_ja.html たとえば、#recent(20)と入力すると以下のように表示されます。 取得中です。
https://w.atwiki.jp/hirotakaohkubo/pages/70.html
2.5 意図している「テストデータのねじれ」が何なのか想像できない。 それさえ判れば書けるのだが。 「キューの中身が全て同じ値だと違いが起きない」とかか? 2.6 公式にある解答例。ただし「あまり賢くない」と書いてある。 -- A not-very-intelligent answer to Exercise 2.6 - try to improve it instance Arbitrary Form where arbitrary = sized arbForm arbForm 0 = liftM Var arbitrary arbForm n | n 0 = frequency [(1, liftM Var arbitrary), (2, liftM2 ( ) subForm subForm), (2, liftM Not subForm)] where subForm = arbForm (n `div` 2) sizeの減らし方が大雑把だという意味なら、次のようにするのはどうか。 instance Arbitrary Form where arbitrary = sized arbForm arbForm 0 = liftM Var arbitrary arbForm n | n 0 = frequency [ (1, liftM Not (arbForm (n − 1))) , (1, liftM2 ( ) subForm subForm)] where subForm = arbForm (n `div` 2) しかしこれでは完全木しか作れないので、やはりfrequencyでもVarを出す可能性を残す必要がある、 ような気がする。 自分用メモ n `div` 2 で同じ大きさの木を両方で作る代わりに、 nを超えない整数kをランダムに選び、左をk,右をn-kの大きさの木にすればよいのではないか? 2.7 「モデルのサイズ」を付置した変数の数と仮定する。 prop_Complete Form - Property prop_Complete p = forAll (valuationOver (names p)) $ \ val - val |= p == collect (l2m (length (names p))) $ any (\ val - val `covers` val) (models p) where l2m k = let i = k `div` 5 * 5 in show i ++ " - " ++ show (i+4) コメント 名前 コメント
https://w.atwiki.jp/hirotakaohkubo/pages/55.html
ex8.8 Lava Tutorialの類似した演習問題4.8によると、 証明器の呼び出し関数がIOモナドであることを利用して、単に順番に呼び出せということらしい。 verifyFor prover prop ns = sequence [ prover (prop n) | n - ns ] ex88 = verifyFor satzoo prop_AdderCommutative_ForSize [1..32] ex8.9 adder2ではなくadderと同じインタフェースのsubtractorを検証せよという問題文の意図が、 どこまで厳密に確認しろと言っているのかよくわからないところが困る。 長さが等しくない場合も含めて、ではありえない面倒臭さになるので、 桁下がりの初期値なども無視して、正常系のテストのみ。 加算をHaskellの(+)でなくadderで行っている点が怪しいので△ ex89 Int - Property ex89 n = forAll (list n) $ ¥ as - forAll (list n) $ ¥ bs - prop_SubtractorCorrect (as, bs) prop_SubtractorCorrect ([Bit],[Bit]) - Bit prop_SubtractorCorrect (as, bs) = ok where (cs, co) = adder (low, (as, bs)) (es, eo) = subber (low, (cs, as)) ok = eo = co bs == es コメント 名前 コメント
https://w.atwiki.jp/hirotakaohkubo/pages/45.html
10.5 合成 LHS = pure (( h) × id) app = app . ((h .) × id) LHS (f, x) = app ( ((h .) × id) (f, x) ) = app ( h.f, id x ) = (h.f) x RHS = app h = h . app RHS (f, x) = h (app (f, x)) = h (f x) 簡約 RHS = pure id = id LHS = pure (mkPair × id) app = app . (mkPair × id) LHS (a, b) = app ( (mkPair × id) (a, b) ) = app (mkPair a, id b) = (mkPair a) b = (a, b) 外延性 LHS = mkPair f app = app . mkPair f LHS x = app (mkPair f x) = app (f, x) = f x 10.6 app = pure (λ (A f, x) → fst (f x)) = pure fa とおく。すると = A (λb → (fa b, pure fa)) = A (λ (A f, x) → (fst (f x), app)) = A fa とおく。 外延性 mkPair f app = f mkPair f = pure (λc → (f, c)) = pure f1 とおく。すると = A (λb → (f1 b, pure f1)) = A (λc → ((f, c), mkPair f) = A f1 とおく。 LHS = mkPair f app = A f1 A fa = A (λb → let { (c,f ) = f1 b; (d,g ) = fa c; } in (d, f g ) ) = A (λb → let { c = (f, b); f = mkPair f; (d,g ) = fa (f, b); } in (d, f1 g ) ) ここで、fは実はAutoのarrowなので、f = A fi という形に表せるはず。よって続けると、 = A (λb → let { c = (f, b); f = mkPair f; (d,g ) = fa (A fi, b); } in (d, f1 g ) ) = A (λb → let { c = (f, b); f = mkPair f; d = fst (fi b); g = app } in (fst (fi b), mkPair f app) ) = A (λb → (fst (fi b), mkPair f app)) このAの中にある関数の返す値のうち、左側は正しい。しかし右側は正しくない。状態遷移していないから。 正しいfは、 f = A fi = A (λb → fi b) = A (λb → (fst (fi b), snd (fi b))) 10.7 instance ArrowChoice NonDet where left (ND f) = ND lf where lf (Left b) = map Left (f b) lf (Right c) = [Right c] instance ArrowChoice (State st) where left (ST f) = ST lf where lf (s, Left b) = let (s ,d) = f (s,b); in (s , Left d) lf (s, Right c) = (s, Right c) instance ArrowChoice StreamMap where left (SM f) = SM (\xs - comb xs (f (lefty xs))) lefty (Cons (Left x) xs) = Cons x (lefty xs) lefty (Cons (Right x) xs) = lefty xs comb (Cons (Left x) xs) (z zs) = Cons (Left z) comb xs zs comb (Cons (Right y) xs) zs = Cons (Right y) comb xs zs 型は合っているが、則を満たしているかは確認していない。 StreamMapについては afp-arrows を参考にした。 StreamMapに対する古い、おそらく誤っている解。LeftもRightも無限に来ることを前提にしている。 fork Stream (Either a b) - Stream (a, b) fork st = fork2 (fork1 st) fork1 Stream (Either a b) - (Stream a, Stream b) fork1 (Cons b st) = let (stL, stR) = fork1 st in case b of Left l - (Cons l stL, stR) Right r- (stL, Cons r stR) fork2 (Stream a, Stream b) - Stream (a,b) fork2 (Cons l stL, Cons r stR) = Cons (l, r) (fork2 (stL, stR)) unfork Stream (a, b) - Stream (Either a b) unfork (Cons (l,r) st) = Cons (Left l) $ Cons (Right r) (unfork st) instance ArrowChoice StreamMap where left f = SM fork first f SM unfork 10.8 State Autoなら状態を持つ実体が分散するから違うと判るが、 Stateは状態を追加で受け取るだけの純関数と言えるので、 どういう例を持ちだせばよいのか判らない。 StreamMap 反例を示す。 -- take k . apply stream appSMtake (SM f) st k = take k (f st) where take 0 _ = [] take k (Cons x xs) = x take (k-1) xs infixr `Cons` ex108sm = (appSMtake lhs st0 8, appSMtake rhs st0 8) where st0 = st 0 st k = Left k `Cons` Right (k+1) `Cons` st (k+2) lhs = (f ||| g) h rhs = (f h) ||| (g h) f = SM id g = SM id h = SM h0 where h0 (Cons x xs) = Cons x (Cons x (h0 xs)) hによる2重化と|||によるunforkのタイミングが異なるために結果が変わる、 というのはあくまで自分のStreamMapのleftの定義に依存するので、これで正しいのか全然自信がない。 コメント 名前 コメント